Skip to content

[Refactor/Bugfix] Expense, Member 구조 개선 및 UI 업데이트#59

Merged
Peter1119 merged 4 commits intomainfrom
hotfix/create_expense
Dec 12, 2025
Merged

[Refactor/Bugfix] Expense, Member 구조 개선 및 UI 업데이트#59
Peter1119 merged 4 commits intomainfrom
hotfix/create_expense

Conversation

@Peter1119
Copy link
Contributor

🔗 관련 이슈

  • 관련 이슈: #

✨ 작업 내용

  • MemberDTO 리네이밍 및 구조 개선

    • TravelMemberDTOMemberDTO 로 이름을 바꾸고, role을 옵셔널로 처리
    • MemberRole에 안전한 초기화(init(value:)) 로직 추가
  • Expense Entity 리팩터링

    • payerId / payerName 필드를 TravelMember 타입의 payer 로 교체
    • CreateExpenseInput을 폐기하고, 새로운 ExpenseInput을 도입해 입력값을 통합
  • UI·UX 스타일 업데이트

    • ExpenseCardView 디자인 리뉴얼 (간격·색상·아이콘 교체)
    • SaveExpenseFeature 화면 레이아웃 정비 및 로직 정리
    • SettlementResultFeature 레이아웃·버튼 스타일 보정

📸 Showcase

변경 전 변경 후
![Before] ![After]

📌 이미지가 없을 경우 이 섹션은 삭제해도 됩니다.


📝 참고 사항

  • 기존 Expense 모델을 사용하는 모든 로직이 새 구조에 맞게 수정되었습니다.
  • 마이그레이션이 필요한 부분은 MemberDTOExpense 변환 로직이며, 현재 프로젝트 내 모든 호출을 업데이트했으니 빌드 오류는 발생하지 않습니다.
  • 테스트(UnitTest/SnapshotTest) 모두 통과했으며, CI 파이프라인에서도 성공을 확인했습니다.

Motivation 🥳

  1. 도메인 일관성 확보payer 정보를 별도 TravelMember 객체로 관리해 데이터 무결성을 보장하고, MemberDTOMemberRole을 명확히 구분.
  2. 가독성·유지보수성 향상 – 중복된 CreateExpenseInput을 제거하고 하나의 ExpenseInput으로 통합해 입출력 구조를 단순화.
  3. UI/UX 개선 – 최신 디자인 시스템에 맞춰 UI 컴포넌트를 리디자인해 사용자 경험을 향상.

Key Changes 🔥

  • MemberDTO (신규)
  • MemberRole (init 추가)
  • Expense (payer 구조 변경)
  • ExpenseInput (신규)
  • ExpenseRepositoryProtocol (시그니처 변경)
  • Domain/Sources/UseCase/Expense/* 전체 리팩터링
  • ExpenseCardView (디자인 리뉴얼)
  • SaveExpenseFeature (레이아웃·로직 정리)
  • SettlementResultFeature (버튼·레이아웃 개선)

To Reviewers 🙏

  • Domain 레이어와 DTO 매핑이 새 구조에 정확히 연결됐는지 확인 부탁드립니다.
  • ExpenseInput을 사용하는 모든 서비스·리포지터리 호출이 최신 시그니처를 사용하고 있는지 검증해 주세요.
  • UI 변경 사항이 iPhone SE / iPhone 13 / iPhone 13 Pro Max에서 정상적으로 표시되는지 스크린샷 혹은 시뮬레이터 테스트를 진행해 주세요.
  • CI에서 모든 테스트가 통과했지만, 로컬에서도 swift test를 한 번 실행해 주시면 좋습니다.

Reference 🔗

  • 디자인 시스템 가이드라인: DesignSystem/README.md
  • 기존 Expense 모델 문서: Docs/Domain/Expense.md

Close Issues 🔒

Close #No.


Checklist

  • 브랜치를 가져와 작업한 경우 이전 브랜치에 PR을 보냈는지 확인
  • 빌드를 위해 SceneDelegate 수정한 것 PR로 올리지 않았는지 확인
  • 필요없는 주석, 프린트문 제거했는지 확인
  • 컨벤션 지켰는지 확인
  • final, private 제대로 넣었는지 확인
  • 다양한 디바이스에 레이아웃이 대응되는지 확인
    • iPhone SE
    • iPhone 13
    • iPhone 13 Pro Max

- TravelMemberDTO를 MemberDTO로 리네이밍 및 구조 변경
- MemberRole 초기화 로직 추가 및 FetchMemberResponseDTO 적용
- Expense 구조체에서 payerId/Name을 TravelMember 타입의 payer로 변경
- CreateExpenseInput을 ExpenseInput으로 통합 및 일반화
- 관련 Request/Response DTO 필드 업데이트
- ExpenseInput 및 Member 구조 변경에 따른 Repository 프로토콜 및 구현체 수정
- Create/Update ExpenseUseCase 및 Mock 객체 업데이트
- CalculateSettlementUseCase 정산 로직 타입 수정 반영
- ExpenseCardView 디자인 개선
- SaveExpense 화면 UI 정렬 및 로직 수정
- SettlementResult 화면 레이아웃 및 스타일 보정
@Peter1119 Peter1119 self-assigned this Dec 12, 2025
Copy link
Contributor

@Roy-wonji Roy-wonji left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Peter1119 수고하셨습니다

Copy link
Contributor

@minneee minneee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다~!

@Peter1119 Peter1119 merged commit 3b7a8f9 into main Dec 12, 2025
1 check passed
@Peter1119 Peter1119 deleted the hotfix/create_expense branch December 12, 2025 12:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants